Модуль __future__: переносим фичи будущих версий в текущий код
Источник: https://t.me/Python_libr/3463
Краткое содержание
Заметка о служебном модуле __future__ в Python. Идея простая: чтобы сгладить различия между версиями интерпретатора и подготовить код к новому поведению, можно явно импортировать «фьючерс»‑флаги. После импорта соответствующая фича из будущей версии становится активной в текущем модуле. Канонические примеры — функция print и оператор деления: в Python 3 / возвращает float всегда, тогда как в Python 2 он мог вернуть int. Автор также напоминает про традиционную пасхалку — from __future__ import braces, которая выводит сообщение, что фигурные скобки в Python никогда не появятся.
# Поведение Python 3 в Python 2: print как функция и «настоящее» деление
from __future__ import print_function, division
print(1 / 2) # 0.5 даже в Python 2
print(1 // 2) # 0 — целочисленное деление сохраняется
# Пасхалка: SyntaxError: not a chance
# from __future__ import braces
Значимость
__future__ остаётся важной частью грамотной миграции и поддержки кода: он позволяет в одной кодовой базе одновременно соблюдать совместимость со старыми версиями и явно включать новое поведение там, где это нужно. В современной практике большинство флагов уже стали поведением по умолчанию (print_function, division, unicode_literals и т. п.), но модуль продолжает использоваться, например, для annotations (PEP 563) и при подготовке к будущим изменениям, что делает его полезным инструментом для авторов библиотек и тех, кто поддерживает legacy-проекты.
🧾 Транскрипт (формат)
📌 Модуль __future__
Источник: https://t.me/Python_libr/3463
📌 Модуль __future__
Чтобы сгладить отличия между версиями Python придумали такой модуль как __future__. Импортируя его вы получаете реализацию компонентов из будущих версий.
Самые простые примеры: функция print и деление. В Python3 деление всегда возвращает float, но в Python2 это может быть и int.
P.S. Также тут есть пасхалка. Попробуйте добавить фигурные скобочки в Python, выполнив в любой версии Python from __future__ import braces.
📕 Документация
#урок